---
id: index
title: Java SDK developer guide
sidebar_label: Java SDK
description: Explore Temporal Java SDK feature guides to master developing Temporal Applications. Learn how to build Workflows, Activities, and Workers, connect to Temporal Services, set up a testing suite, handle failure detection, send messages, complete Activities asynchronously, implement Versioning, use Observability, debug applications, schedule Workflows
toc_max_heading_level: 4
keywords:
  - Java SDK
tags:
  - Java SDK
  - Temporal SDKs
---


![Java SDK Banner](/img/banner-java-temporal.png)

:::info JAVA SPECIFIC RESOURCES
Build Temporal Applications with the Java SDK.

**Temporal Java Technical Resources:**
- [Java API Documentation](https://javadoc.io/doc/io.temporal/temporal-sdk)
- [Java SDK Code Samples](https://github.com/temporalio/samples-java)
- [Java SDK GitHub](https://github.com/temporalio/sdk-java)

**Get Connected with the Temporal Java Community:**

- [Temporal Java Community Slack](https://temporalio.slack.com/archives/CTT84KXK9)
- [Java SDK Forum](https://community.temporal.io/tag/java-sdk)
:::

## [Core application](/develop/java/core-application)

Use the essential components of a Temporal Application (Workflows, Activities, and Workers) to build and run a Temporal application.

- [How to develop a Workflow Definition in Java](/develop/java/core-application#develop-workflows)
- [How to develop a basic Activity](/develop/java/core-application#develop-activities)
- [How to start an Activity Execution](/develop/java/core-application#activity-execution)
- [How to develop a Worker Program in Java](/develop/java/core-application#run-a-dev-worker)

## [Temporal Client](/develop/java/temporal-clients)

Connect to a Temporal Service and start a Workflow Execution.

- [Connect to a development Temporal Service](/develop/java/temporal-clients#connect-to-development-service)
- [Connect to a custom Namespace](/develop/java/temporal-clients#connect-to-custom-namespace)
- [Connect to Temporal Cloud](/develop/java/temporal-clients#connect-to-temporal-cloud)
- [Start a Workflow Execution](/develop/java/temporal-clients#start-workflow-execution)

## [Testing](/develop/java/testing-suite)

Set up the testing suite and test Workflows and Activities.

- [Test frameworks](/develop/java/testing-suite#test-frameworks)
- [Test Activities](/develop/java/testing-suite#test-activities)
- [Testing Workflows](/develop/java/testing-suite#test-workflows)
- [How to Replay a Workflow Execution](/develop/java/testing-suite#replay)

## [Failure detection](/develop/java/failure-detection)

Explore how your application can detect failures using timeouts and automatically attempt to mitigate them with retries.

- [Workflow timeouts](/develop/java/failure-detection#workflow-timeouts)
- [How to set Activity timeouts](/develop/java/failure-detection#activity-timeouts)
- [How to Heartbeat an Activity](/develop/java/failure-detection#activity-heartbeats)

## [Workflow message passing](/develop/java/message-passing)

Send messages to and read the state of Workflow Executions.

- [How to develop with Signals](/develop/java/message-passing#signals)
- [How to develop with Queries](/develop/java/message-passing#queries)
- [What is a Dynamic Handler?](/develop/java/message-passing#dynamic-handler)
- [How to develop with Updates](/develop/java/message-passing#updates)

## [Asynchronous Activity completion](/develop/java/asynchronous-activity-completion)

Complete Activities asynchronously.

- [How to asynchronously complete an Activity](/develop/java/asynchronous-activity-completion)

## [Versioning](/develop/java/versioning)

Change Workflow Definitions without causing non-deterministic behavior in current long-running Workflows.

- [How to patch Workflows in Java](/develop/java/versioning#patching)
- [How to use Worker Versioning in Java](/develop/java/versioning#worker-versioning)

## [Observability](/develop/java/observability)

Configure and use the Temporal Observability APIs.

- [How to emit metrics](/develop/java/observability#metrics)
- [How to setup Tracing](/develop/java/observability#tracing)
- [How to log from a Workflow](/develop/java/observability#logging)
- [How to use Visibility APIs](/develop/java/observability#visibility)

## [Debugging](/develop/java/debugging)

Explore various ways to debug your application.

- [How to debug in a development environment](/develop/java/debugging#debug-in-a-development-environment)
- [How to debug in a production environment](/develop/java/debugging#debug-in-a-production-environment)

## [Schedules](/develop/java/schedules)

Run Workflows on a schedule and delay the start of a Workflow.

- [How to Schedule a Workflow](/develop/java/schedules#schedule-a-workflow)
- [How to set a Cron Schedule in Java](/develop/java/schedules#cron-schedule)

## [Data encryption](/develop/java/converters-and-encryption)

Use compression, encryption, and other data handling by implementing custom converters and codecs.

- [How to use a custom Payload Codec in Java](/develop/java/converters-and-encryption#custom-payload-codec)
- [How to use custom Payload conversion](/develop/java/converters-and-encryption#custom-payload-conversion)

## Temporal Nexus

The [Temporal Nexus](/develop/java/nexus) feature guide shows how to use Temporal Nexus to connect Durable Executions within and across Namespaces using a Nexus Endpoint, a Nexus Service contract, and Nexus Operations.

- [Create a Nexus Endpoint to route requests from caller to handler](/develop/java/nexus#create-nexus-endpoint)
- [Define the Nexus Service API contract](/develop/java/nexus#define-nexus-service-api-contract)
- [Develop a Nexus Service and Operation handlers](/develop/java/nexus#develop-nexus-service-operation-handlers)
- [Develop a caller Workflow that uses a Nexus Service](/develop/java/nexus#develop-caller-workflow-nexus-service)
- [Make Nexus calls across Namespaces with a development Server](/develop/java/nexus#nexus-calls-across-namespaces-dev-server)
- [Make Nexus calls across Namespaces in Temporal Cloud](/develop/java/nexus#nexus-calls-across-namespaces-temporal-cloud)

## [Child Workflows](/develop/java/child-workflows)

Explore how to spawn a Child Workflow Execution and handle Child Workflow Events.

- [Start a Child Workflow Execution](/develop/java/child-workflows#start-child-workflow)
- [Set a Parent Close Policy](/develop/java/child-workflows#parent-close-policy)

## [Continue-As-New](/develop/java/continue-as-new)

Continue the Workflow Execution with a new Workflow Execution using the same Workflow ID.

- [Continue a Workflow as New](/develop/java/continue-as-new)

## [Durable Timers](/develop/java/timers)

Use Timers to make a Workflow Execution pause or "sleep" for seconds, minutes, days, months, or years.

- [What is a Timer?](/develop/java/timers#timers)

## [Side Effects](/develop/java/side-effects)

Use Side Effects in Workflows.

- [Side Effects](/develop/java/side-effects#side-effects)

## [Manage Namespaces](/develop/java/namespaces)

Create and manage Namespaces.

- [Create a Namespace](/develop/java/namespaces#register-namespace)
- [Manage Namespaces](/develop/java/namespaces#manage-namespaces)
